C++ 并发编程与线程库实战

📚 共计 30 章节
第1章
并发编程概述
为什么需要并发?进程与线程的区别、C++并发编程的发展历程。
基础概念
第2章
线程基础
std::thread的创建与启动、线程的join与detach、传递参数给线程函数。
线程入门
第3章
线程管理
线程的移动语义、标识与获取、休眠与yield。
管理标识
第4章
互斥锁基础
std::mutex的使用、lock与unlock、std::lock_guard与RAII。
RAII
第5章
死锁与预防
死锁四个必要条件、std::lock与std::scoped_lock、最佳实践。
死锁预防
第6章
unique_lock详解
灵活锁管理、延迟锁定与所有权转移、与lock_guard对比。
unique_lock灵活
第7章
条件变量
std::condition_variable、wait/notify、生产者-消费者实战。
同步条件
第8章
原子操作基础
std::atomic用法、内存顺序、与互斥锁性能对比。
原子无锁
第9章
内存顺序详解
memory_order_relaxed/acquire/release/seq_cst。
内存模型顺序
第10章
线程安全的数据结构
线程安全栈/队列、无锁编程初步探索。
数据结构无锁
第11章
future与promise
std::future/promise、异步任务返回值、异常处理。
异步future
第12章
packaged_task与async
封装任务、启动策略、异步性能分析。
async任务
第13章
线程池设计
核心原理、简单线程池实现、任务队列与协调。
线程池设计
第14章
线程池进阶
动态调整线程数、优先级队列、优雅关闭。
进阶调度
第15章
并行算法
std::for_each/transform并行版本、执行策略(seq/par/par_unseq)。
算法并行
第16章
读写锁
std::shared_mutex/shared_lock、读多写少优化、对比。
读写锁共享
第17章
信号量与屏障
std::counting_semaphore、barrier/latch、同步思路。
信号量屏障
第18章
线程局部存储
thread_local关键字、生命周期、与全局变量对比。
TLS局部
第19章
并发容器
concurrent_unordered_map (C++26)、第三方库、无锁容器思路。
容器并发
第20章
协程基础
C++20协程、co_await/co_return、与线程对比。
协程C++20
第21章
协程实战
生成器与异步I/O、调度性能、并发应用。
实战异步
第22章
锁无关编程
CAS操作与ABA问题、无锁栈/队列实现。
无锁CAS
第23章
内存模型与happens-before
核心规则、happens-before建立、数据竞争检测。
内存模型happens-before
第24章
并发调试与性能分析
死锁/活锁/饥饿、GDB调试、性能分析工具。
调试性能
第25章
线程安全单例模式
双重检查锁定、Meyer's Singleton、C++11初始化。
单例线程安全
第26章
并发设计模式
生产者-消费者、读者-写者、工作窃取模式。
模式架构
第27章
C++20并发新特性
std::jthread、stop_token、counting_semaphore改进。
C++20jthread
第28章
跨平台并发编程
Windows/Linux差异、标准库跨平台、平台API封装。
跨平台移植
第29章
高性能并发编程
缓存行与伪共享、内存对齐、NUMA亲和性。
性能优化
第30章
综合实战
高并发日志系统、并发Web服务器、并发计算框架。
实战项目